﻿/*
Copyright (c) 2009 Vratislav Cermak (vratacermak@gmail.com)
 
This file is part of TeachMe Project. See http://code.google.com/p/teach-me for more information.
 
TeachMe is an open source project. Using of TeachMe is free of charge.
It is distributed under GNU General Public License version 3 (GPLv3).
GPLv3 can be found at http://www.gnu.org/licenses/gpl.html.
 
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the license for more details.
*/

using System.ComponentModel;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace TeachMe.Application.Controls
{
    public class StrictEdit : ErrorEdit
    {
        private string _allowedCharacters = ".*";
        private string _allowedValue = ".*";

        [Browsable(true)]
        public string AllowedCharacters
        {
            get
            {
                return _allowedCharacters;
            }
            set
            {
                _allowedCharacters = value;
            }
        }

        [Browsable(true)]
        public string AllowedValue
        {
            get
            {
                return _allowedValue;
            }
            set
            {
                _allowedValue = value;
            }
        }

        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (e.KeyChar != '\b')
            {
                if (!Regex.IsMatch(e.KeyChar.ToString(), _allowedCharacters))
                {
                    e.Handled = true;
                }
            }

            base.OnKeyPress(e);
        }

        protected override bool InternalIsValid()
        {
            return Regex.IsMatch(Text, _allowedValue);
        }
    }
}
